﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.IO;
using Poli.IA.GA;

namespace Poli.IA.Web
{
    public partial class InserirMusica : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnInserir_Click(object sender, EventArgs e)
        {
            Musica novaMusica = CriarMusica();
            string caminho = Server.MapPath(@"banco.xml");
            if (string.IsNullOrEmpty(novaMusica.Nome)
                || string.IsNullOrEmpty(novaMusica.Artista)
                || novaMusica.Estilo.ToString().Equals("-1")
                || novaMusica.Nacionalidade.ToString().Equals("-1")
                || novaMusica.Decada.ToString().Equals("-1")
                || novaMusica.Hit.ToString().Equals("-1")
                || novaMusica.Ritmo.ToString().Equals("-1")
                || novaMusica.Tendencia.ToString().Equals("-1")
                )
            {
                lblMensagem.ForeColor = System.Drawing.Color.Red;
                lblMensagem.Text = "Todos os campos são obrigatórios";
            }
            else
            {
                Inserir(novaMusica, caminho);
            }
        }

        private Musica CriarMusica()
        {
            Musica selecionado = new Musica();
            selecionado.Nome = txtMúsica.Text;
            selecionado.Artista = txtArtista.Text;
            selecionado.Estilo = (EstiloEnum)Enum.Parse(typeof(EstiloEnum), ddlEstilo.SelectedValue, false);
            selecionado.Nacionalidade = (NacionalidadeEnum)Enum.Parse(typeof(NacionalidadeEnum), ddlNacionalidade.SelectedValue, false);
            selecionado.Decada = (DecadaEnum)Enum.Parse(typeof(DecadaEnum), ddlDecada.SelectedValue, false);
            selecionado.Hit = (HitEnum)Enum.Parse(typeof(HitEnum), ddlHit.SelectedValue, false);
            selecionado.Ritmo = (RitmoEnum)Enum.Parse(typeof(RitmoEnum), ddlRitmo.SelectedValue, false);
            selecionado.Tendencia = (TendenciaEnum)Enum.Parse(typeof(TendenciaEnum), ddlTendencia.SelectedValue, false);

            return selecionado;
        }

        private void Inserir(Musica novaMusica, string caminho)
        {
            XmlDocument documento = new XmlDocument();
            documento.Load(caminho);

            XmlNode musica = documento.CreateElement("Musica");
            XmlNode nome = documento.CreateElement("Nome");
            nome.InnerText = novaMusica.Nome;
            XmlNode artista = documento.CreateElement("Artista");
            artista.InnerText = novaMusica.Artista;
            XmlNode nacionalidade = documento.CreateElement("Nacionalidade");
            nacionalidade.InnerText = novaMusica.Nacionalidade.ToString();
            XmlNode estilo = documento.CreateElement("Estilo");
            estilo.InnerText = novaMusica.Estilo.ToString();
            XmlNode ritmo = documento.CreateElement("Ritmo");
            ritmo.InnerText = novaMusica.Ritmo.ToString();
            XmlNode tendencia = documento.CreateElement("Tendencia");
            tendencia.InnerText = novaMusica.Tendencia.ToString();
            XmlNode decada = documento.CreateElement("Decada");
            decada.InnerText = novaMusica.Decada.ToString();
            XmlNode hit = documento.CreateElement("Hit");
            hit.InnerText = novaMusica.Hit.ToString();

            musica.AppendChild(nome);
            musica.AppendChild(artista);
            musica.AppendChild(estilo);
            musica.AppendChild(nacionalidade);
            musica.AppendChild(ritmo);
            musica.AppendChild(tendencia);
            musica.AppendChild(decada);
            musica.AppendChild(hit);

            documento.SelectSingleNode("/Acervo").AppendChild(musica);
            documento.Save(caminho);
            lblMensagem.ForeColor = System.Drawing.Color.Green;
            lblMensagem.Text = "Música inserida com sucesso";
            LimparCampos();
        }

        private void LimparCampos()
        {
            txtArtista.Text = string.Empty;
            txtMúsica.Text = string.Empty;
            ddlDecada.SelectedValue = "-1";
            ddlEstilo.SelectedValue = "-1";
            ddlHit.SelectedValue = "-1";
            ddlRitmo.SelectedValue = "-1";
            ddlNacionalidade.SelectedValue = "-1";
            ddlTendencia.SelectedValue = "-1";
            txtArtista.Focus();
        }
    }
}